<!DOCTYPE html>
<html lang="en">

<head>
  <title></title>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <script src="./vue2.js"></script>
  <style>
    #app {
      width: 600px;
      margin: 10px auto;
    }

    .tb {
      border-collapse: collapse;
      width: 100%;
    }

    .tb th {
      background-color: #0094ff;
      color: white;
    }

    .tb td,
    .tb th {
      padding: 5px;
      border: 1px solid black;
      text-align: center;
    }

    .add {
      padding: 5px;
      border: 1px solid black;
      margin-bottom: 10px;
    }
  </style>
</head>

<body>
  <div id="app">
    <div class="add">
      编号:
      <input type="text" v-model="newId" v-mycolor="color"> 品牌名称:
      <input type="text" v-model="newName" v-myfocus>
      <input type="button" value="添加" @click="addData">
    </div>

    <div class="add">
      品牌名称:
      <input type="text" placeholder="请输入搜索条件">
    </div>

    <div>
      <table class="tb">
        <tr>
          <th>编号</th>
          <th>品牌名称</th>
          <th>创立时间</th>
          <th>操作</th>
        </tr>
        <tr v-for="(item, index) in list" :key="index">
          <td>{{item.id}}</td>
          <td>{{item.name}}</td>
          <td>{{item.ctime}}</td>
          <td>
            <!-- 将index作为参数传入 -->
            <a href="#" @click="deleteData(index)">删除</a>
          </td>
        </tr>
        <tr v-if="list.length === 0">
          <td colspan="4">没有品牌数据</td>
        </tr>
        <!-- 动态生成内容tr -->
      </table>
    </div>
  </div>
</body>

<script>
  // 自定义指令通过Vue.directive()创建，它包含两个参数，一个是自定义指令的名字，可以随便取，
  // 但是全部小写；另一个是一个对象，表示自定义指令的配置项。
  // 这里实际上创建的是v-myfocus指令
  Vue.directive('myfocus', {
    // inserted钩子函数，它表示自定义指令插入到标签中的时候就执行
    // inserted钩子函数有两个参数（el,binding） el表示使用自定义指令的元素，binding表示自定义指令的信息
    // 钩子函数是系统定义的函数，会自动执行
    inserted(el, binding) {
      console.log(el);
      console.log(binding);
      el.focus()
    }
  })
  // 创建v-mycolor自定义指令
  Vue.directive('mycolor', {
    inserted(el, binding) {
      console.log(binding);
      // binding.value可以获取传入自定义指令中的属性的值
      el.style.color = binding.value
      // binding.value 代表的是自定义指令对应的指令值(指令值是一个表达式,data中定义的变量)
      // binging.value是该表达式的值
      // binding.expression 自定义指令对应的指令值
    }
  })
  var vm = new Vue({
    el: '#app',
    data: {
      newId: '',
      newName: '',
      color: 'red',
      list: [
        {id: 1, name: 'CC', ctime: new Date()},
        {id: 2, name: 'LV', ctime: new Date()},
        {id: 3, name: 'AA', ctime: new Date()},
        ]
    },
    methods: {
      deleteData (idx) {
        this.list.splice(idx, 1)
      },
      addData () {
        this.list.push({id: this.newId, name: this.newName, ctime: new Date()})
      }
    }
  })
</script>
</html>